﻿using ModbusTCP;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace AgvDemo
{
    public class ModbusLampClass
    {
        string ip = string.Empty;
        public Socket LampClient;
        bool isConnectSure = false;
        IPEndPoint LampIpEndPoint;
        public Ping pingAgv = new Ping();
        public ModbusLampClass(string ipTemp)
        {
            ip = ipTemp;

          
            PlcThread();
        }


        public void PlcThread()
        {
            Thread th1 = new Thread(new ThreadStart(ChargeThreadMethod9));
            th1.IsBackground = true;
            th1.Start();

        }

        private void ChargeThreadMethod9()
        {
            //LampIpEndPoint = new IPEndPoint(IPAddress.Parse(ip), 8080);
            //LampClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            //while (true)
            //{           
            //    try
            //    {
            //        if (pingAgv.Send(ip).Status == IPStatus.Success)
            //        {

            //            if (!isConnectSure)
            //            {
            //                try
            //                {
                             
            //                    LampClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //                    LampClient.Connect(LampIpEndPoint);
            //                    isConnectSure = true;


            //                    if (ip == "10.185.221.231")
            //                    {
            //                        MainForm.mainForm.toolStripLabel6.Text = "231红绿灯连接成功";
            //                        MainForm.mainForm.toolStripLabel6.ForeColor = Color.Lime;
            //                    }
            //                    else if (ip == "10.185.221.232")
            //                    {
            //                        MainForm.mainForm.toolStripLabel4.Text = "232红绿灯连接成功";
            //                        MainForm.mainForm.toolStripLabel4.ForeColor = Color.Lime;
            //                    }
            //                    else if (ip == "10.185.221.233")
            //                    {
            //                        MainForm.mainForm.toolStripLabel5.Text = "233红绿灯连接成功";
            //                        MainForm.mainForm.toolStripLabel5.ForeColor = Color.Lime;
            //                    }
            //                    else if (ip == "10.185.221.234")
            //                    {
            //                        MainForm.mainForm.toolStripLabel7.Text = "234红绿灯连接成功";
            //                        MainForm.mainForm.toolStripLabel7.ForeColor = Color.Lime;
            //                    }
            //                }
            //                catch
            //                {
            //                    isConnectSure = false;
            //                    //MainForm.mainForm.toolStripLabel1.Text = "车门机构连接异常";
            //                    //MainForm.mainForm.toolStripLabel1.ForeColor = Color.Red;

            //                    if (ip == "10.185.221.231")
            //                    {
            //                        MainForm.mainForm.toolStripLabel6.Text = "231红绿灯连接异常";
            //                        MainForm.mainForm.toolStripLabel6.ForeColor = Color.Red;
            //                    }
            //                    else if (ip == "10.185.221.232")
            //                    {
            //                        MainForm.mainForm.toolStripLabel4.Text = "232红绿灯连接异常";
            //                        MainForm.mainForm.toolStripLabel4.ForeColor = Color.Red;
            //                    }
            //                    else if (ip == "10.185.221.233")
            //                    {
            //                        MainForm.mainForm.toolStripLabel5.Text = "233红绿灯连接异常";
            //                        MainForm.mainForm.toolStripLabel5.ForeColor = Color.Red;
            //                    }
            //                    else if (ip == "10.185.221.234")
            //                    {
            //                        MainForm.mainForm.toolStripLabel7.Text = "234红绿灯连接异常";
            //                        MainForm.mainForm.toolStripLabel7.ForeColor = Color.Red;
            //                    }
            //                }

            //            }
            //            else
            //            {
                           
            //            }
            //        }
            //        else
            //        {
            //            if (LampClient != null)// && _clientSock.Connected 
            //            {
            //                isConnectSure = false;
            //                try
            //                {
            //                    LampClient.Shutdown(SocketShutdown.Both);
            //                }
            //                catch (SocketException ex)
            //                {
            //                    //套接字异常
            //                }
            //                catch (ObjectDisposedException ex)
            //                {
            //                    //已释放异常
            //                }

            //                try
            //                {
            //                    LampClient.Close();
            //                }
            //                catch
            //                { }

                        
            //            }
            //            else
            //                isConnectSure = false;


            //        }


            //    }
            //    catch
            //    {


            //        if (LampClient != null)// && _clientSock.Connected 
            //        {
                        
            //            try
            //            {
            //                LampClient.Shutdown(SocketShutdown.Both);
            //            }
            //            catch (SocketException ex)
            //            {
            //                //套接字异常
            //            }
            //            catch (ObjectDisposedException ex)
            //            {
            //                //已释放异常
            //            }

            //            try
            //            {
            //                LampClient.Close();
            //            }
            //            catch
            //            { }

            //            isConnectSure = false;

            //        }
            //        else
            //            isConnectSure = false;


            //    }

            //    Thread.Sleep(1000);
            //}
        }

        public void SendGreen()
        {
            try
            {
                byte[] data = new byte[] { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x06, 0x00, 0x02, 0x00, 0x00 };
                LampClient.Send(data);
            }
            catch
            { }
        
        }


        public void SendRed()
        {           
            try
            {
                byte[] data = new byte[] { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x06, 0x00, 0x02, 0x00, 0x01 };
                LampClient.Send(data);
            }
            catch
            { }
        }
    }
}
